import Vue from 'vue'
import App from './App'

// 初始化css
import 'normalize.css/normalize.css'
// ElementUI
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
// 全局css
import '@/styles/index.scss'
// vuex
import store from './store'
// 路由文件
import router from './router'
// 引入所有自定义指令文件
import * as directives from '@/directives'
// 图标文件
import '@/icons'
// 权限文件(路由守卫)
import '@/permission'
// 引入组件
import Component from '@/components'
// 引入过滤器
import * as filters from '@/filters'
// 引入混入对象检查
import mixin from '@/mixin/checkPermission'
// 注册打印插件
import Print from 'vue-print-nb'
// 国际化语言包
import i18n from '@/lang'

Vue.use(Component)
// 设置element为当前的语言
Vue.use(ElementUI, {
  i18n: (key, value) => i18n.t(key, value)
})

// 注册全局的过滤器
Object.keys(filters).forEach(key => {
  Vue.filter(key, filters[key])
})
// 注册自定义指令
// 遍历所有的导出的指令对象 完成自定义全局注册
Object.keys(directives).forEach(key => {
  // 注册自定义指令
  Vue.directive(key, directives[key])
})
// 注册打印插件
Vue.use(Print)

// 全局混入检查对象
Vue.mixin(mixin)// 表示所有组件都拥有了检查的方法

Vue.config.productionTip = false

new Vue({
  el: '#app',
  router,
  store,
  i18n,
  render: h => h(App)
})
